// 节点树
layui.define(['jquery', 'form', 'upload'], function(exports){
    let $ = layui.jquery;
    let form = layui.form;
    let upload = layui.upload;

    let obj = {
        alreadySetSkuVals: {},
        is_echo: false,

        createTable: function() {
            let _this = this;
            if (!_this.is_echo) {
                this.getAlreadySetSkuVals();//获取已经设置的SKU值
            }
            _this.is_echo = false;
            let b = true;
            let skuTypeArr =  [];//存放SKU类型的数组
            let totalRow = 1;//总行数
            //获取元素类型
            $(".SKU_TYPE").each(function(){
                // ===============属性节点=========================================
                let skuTypeObj = {};//sku类型对象
                //SKU属性类型标题
                skuTypeObj.skuTypeTitle = $(this).text();
                //SKU属性类型主键
                skuTypeObj.skuTypeKey = $(this).attr("attr_id");

                // ===============属性值=========================================
                let skuValueArr = [];//存放SKU值得数组
                //SKU相对应的节点
                let skuValNode = $(this).next();
                //获取SKU值
                let skuValCheckBoxs = $(skuValNode).find(".layui-form-checked");
                let checkedNodeLen = 0 ;//选中的SKU节点的个数
                $(skuValCheckBoxs).each(function(){
                    let skuValObj = {};//SKU值对象
                    let skuobj = $(this).prev();
                    skuValObj.skuValueTitle = skuobj.attr('title');//SKU值名称
                    skuValObj.skuValueId = skuobj.val();//SKU值主键
                    skuValObj.skuPropId = skuobj.attr("propid");//SKU类型主键
                    skuValueArr.push(skuValObj);
                    checkedNodeLen ++ ;
                });
                // if(checkedNodeLen <= 0){//有必选的SKU仍然没有选中
                //     b = false;
                //     return false;//直接返回
                // }
                if(skuValueArr && skuValueArr.length > 0){
                    totalRow = totalRow * skuValueArr.length;
                    skuTypeObj.skuValues = skuValueArr;//sku值数组
                    skuTypeObj.skuValueLen = skuValueArr.length;//sku值长度
                    skuTypeArr.push(skuTypeObj);//保存进数组中
                }
            });
            let SKUTableDom = "";//sku表格数据
            //开始创建行
            // if(b){//必选的SKU属性已经都选中了

                //调整顺序(少的在前面,多的在后面)
                // skuTypeArr.sort(function(skuType1,skuType2){
                //     return (skuType1.skuValueLen - skuType2.skuValueLen)
                // });

                SKUTableDom += "<table class='skuTable layui-table'><tr>";
                //创建表头
                for(let t = 0 ; t < skuTypeArr.length ; t ++){
                    SKUTableDom += '<th>'+skuTypeArr[t].skuTypeTitle+'</th>';
                }
                SKUTableDom += '<th>价格</th><th>图片</th>';
                SKUTableDom += "</tr>";
                //循环处理表体
                for(let i = 0 ; i < totalRow ; i ++){//总共需要创建多少行
                    let currRowDoms = "";
                    let rowCount = 1;//记录行数
                    let propvalidArr = [];//记录SKU值主键
                    let propvalnameArr = [];//记录SKU值标题
                    for(let j = 0 ; j < skuTypeArr.length ; j ++){//sku列
                        let skuValues = skuTypeArr[j].skuValues;//SKU值数组
                        let skuValueLen = skuValues.length;//sku值长度
                        rowCount = (rowCount * skuValueLen);//目前的生成的总行数
                        let anInterBankNum = (totalRow / rowCount);//跨行数
                        let point = ((i / anInterBankNum) % skuValueLen);
                        if(0  === (i % anInterBankNum)){//需要创建td
                            currRowDoms += '<td rowspan='+anInterBankNum+'>'+skuValues[point].skuValueTitle+'</td>';
                            propvalidArr.push(skuValues[point].skuValueId);
                            propvalnameArr.push(skuValues[point].skuValueTitle);
                        }else{
                            //当前单元格为跨行
                            propvalidArr.push(skuValues[parseInt(point)].skuValueId);
                            propvalnameArr.push(skuValues[parseInt(point)].skuValueTitle);
                        }
                    }

                    //进行排序(主键小的在前,大的在后),注意:适用于数值类型的主键
                    propvalidArr.sort(function(provids1,propvids2){
                        return (provids1 - propvids2)
                    });

                    let propvalids = propvalidArr.toString();
                    let alreadySetSkuPrice = 0;//已经设置的SKU价格
                    let alreadySetSkuImg = "/static/image/default.jpg";//已经设置的SKU图片
                    let alreadySetSkuImgFile = "/static/image/default.jpg";//已经设置的SKU图片

                    //赋值
                    if(_this.alreadySetSkuVals){
                        let currGroupSkuVal = _this.alreadySetSkuVals[propvalids];//当前这组SKU值
                        if(currGroupSkuVal){
                            alreadySetSkuPrice = currGroupSkuVal.skuPrice;
                            alreadySetSkuImg = currGroupSkuVal.skuImg || "/static/image/default.jpg";
                            alreadySetSkuImgFile = currGroupSkuVal.skuImgFile || "/static/image/default.jpg";
                        }
                    }
                    SKUTableDom += '<tr data-attrids=\''+propvalids+'\' data-attrs=\''+propvalnameArr.join(",")+'\' class="sku_table_tr">'+currRowDoms+
                        '<td>' +
                        '<input type="text" class="layui-input price" value="'+alreadySetSkuPrice+'"/>' +
                        '</td>' +
                        '<td>' +
                        '<img src="'+alreadySetSkuImg+'" style="width: 50px; height: 50px;" /> <a href="javascript:;" class="layui-btn layui-btn-xs add-sku-img">设置图片</a> ' +
                        '<input type="hidden" class="layui-input sku-img" value="'+alreadySetSkuImgFile+'"/>' +
                        '</td>' +
                        '</tr>';
                }
                SKUTableDom += "</table>";
            // }
            if (skuTypeArr.length > 0) {
                $("#skuTable").html(SKUTableDom);
                // 调用绑定上传事件函数
                _this.bindUpload();
            } else {
                $("#skuTable").html('');
            }

        },
        /**
         * 获取已经设置的SKU值
         */
        getAlreadySetSkuVals: function(){
            let _this = this;
            _this.alreadySetSkuVals = {};
            //获取设置的SKU属性值
            $("tr[class*='sku_table_tr']").each(function(){
                let skuPrice = $(this).find("input[type='text'][class*='sku-price']").val();//SKU价格
                let skuImg = $(this).find(".sku-img").val();//SKU图片
                if(skuPrice || skuImg){//已经设置了全部或部分值
                    let attrids = $(this).data("attrids");//SKU值主键集合
                    _this.alreadySetSkuVals[attrids] = {
                        "skuPrice" : skuPrice,
                        "skuImg" : skuImg
                    }
                }
            });
        },
        /**
         * 设置（编辑商品时回显）已经设置的sku值
         */
        setAlreadySetSkuVals: function(_url){
            let _this = this;
            _this.alreadySetSkuVals = {};
            _this.is_echo = true;
            $.ajax({
                url: _url
                ,headers: { //通过 request 头传递
                    token: layui.data('layuiAdmin').token
                }
                , success: function (res) {
                    $(res.data.sku).each(function (i, d) {
                        console.log(d);
                        _this.alreadySetSkuVals[d.attrs] = {
                            "skuPrice": d.price,
                            "skuImg": d.min_image,
                            "skuImgFile": d.image
                        }
                    });
                    let _attrs = res.data.attrs.split(',');
                    $(_attrs).each(function (i, d) {
                        $(".sku_value[value='"+ d +"']").prop('checked', true);
                    });
                    form.render();
                    _this.createTable();
                }
            });
        },
        bindUpload: function () {
            //执行实例
            upload.render({
                elem: '.add-sku-img' //绑定元素
                ,url: layui.setter.API_HOST + 'admin/util/image_upload' //上传接口
                ,headers: { //通过 request 头传递
                    token: layui.data('layuiAdmin').token
                }
                ,data: {
                    type: 'product_sku'
                }
                ,done: function(res) {
                    var item = this.item;
                    $(item).prev().attr('src', res.data.image);
                    $(item).siblings('.sku-img').val(res.data.path);
                    //上传完毕回调
                }
            });
        }
    }

    exports('sku', obj);
})
